  import * as globalTypes from '../../../mutation-types'
  import * as types from './mutation-types'
  import agentDept from '../../../api/config/agent-dept'
  import { Base64, deepClone } from '@utils/m7Utils'
  /**
   * 导出座席信息
   */
  export const exportUserExcel = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.exportUserExcel(data)
      .then(response => {
        if (response.Succeed) {
          commit(globalTypes.SET_FILEDOWNLOAD, {path: response.path, isSession: true})
        }
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 查询套餐数量
   * @param data {}
   */
  export const queryVersionNum = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.queryVersionNum(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }

 /* 部门增删改查 start */

  /**
   * 查询所有部门
   * @param data.page
   * @param data.limit
   * @returns {*}
   */
  export const queryDeptList = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.queryDeptList(data)
      .then(response => {
        if (response.success) {
          return response.depts
        } else {
          return response
        }
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 添加部门
   * @param data._id 当前节点id
   * @param data.pId 父节点id
   * @param data.treePath id结构树
   * @param data.name 部门名称
   * @param data.order 部门序号
   * @param data.observer 观察者
   * @param data.note 备注
   * @returns {*}
   */
  export const addDept = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.addDept(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 修改部门
   * @param data._id 当前节点id
   * @param data.pId 父节点id
   * @param data.treePath id结构树
   * @param data.name 部门名称
   * @param data.order 部门序号
   * @param data.observer 观察者
   * @param data.note 备注
   * @returns {*}
   */
  export const updateDept = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.updateDept(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 删除部门
   * @param data.deptId 部门id
   * @returns {*}
   */
  export const delDept = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.delDept(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /* 部门增删改查 end */

  /**
   * 移动部门
   * @param data {}
   * @param data._id 移动部门的_id
   * @param data.pId 要移动到的部门_id
   * @param data.treePath 要引动到的部门的treePath + 移动的部门_id + '/'
   */
  export const moveDept = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.moveDept(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /* 座席增删改查 start */
  /**
   * 查询座席列表
   * @param data.page
   * @param data.limit
   * @param data.deptId 部门id 可选  "noDept"-未分配部门
   * @param data.combox 座席名称 可选
   * @param data.role 角色 可选
   * @param data.beginExten 开始工号 可选
   * @param data.endExten 结束工号 可选
   * @param data.parentId 上级id 可选
   * @param data.status 座席状态 可选 "enable" / "disable"
   * @returns {*}
   */
  export const queryUser = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.queryUser(data)
      .then(response => {
        if (response.success) {
          commit(types.SET_AGENT_QUERYS, {query: data})
        }
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 根据座席id查询座席信息
   * @param data 座席id 例如: data:"1a8f9d10-2b35-11e7-8838-c3497eec9423"
   * @returns {*}
   */
  export const getUserById = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.getUserById(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 更新当前座席
   * @param data._id 座席id
   * @param data.deptId 部门id
   * @param data.parentId 上级id
   * @param data.role 角色 数组
   * @param data.imClaimStatus 自动领取开关状态 "open"/"close"
   * @param data.maxImDealCount 最大处理数 "10"
   * @param data.minImDealCount 最小处理数 "1"
   * @param data.iscallinternation 是否开启国际通话功能 true/false
   * @param data.maxEmailDealCount 邮件最大处理数 "10"
   * @param data.gatewayLoginWay 是否允许sip话机登录 true/false
   * @param data.localLoginWay 是否允许手机登录 true/false
   * @param data.sipLoginWay  是否允许软电话登录 true/false
   * @param data.appLoginWay 是否允许app登录 true/false
   * @param data.uvsersion 套餐类型 'enterprise'(企业版)/'service'(标准版)/'outcall'(电销版)/'monitor'(监控版)
   * @param data.set.callIngWebchatSwitch 来电时不接入在线咨询 "yes"/"no"

   * @param data.ivrInfo 座席详细资料 对象
   * @param data.ivrInfo._id 座席id
   * @param data.ivrInfo.displayName 座席名称
   * @param data.ivrInfo.exten 座席工号
   * @param data.ivrInfo.mobile 座席电话
   * @param data.ivrInfo.email 座席邮箱
   * @param data.ivrInfo.AutoBusyTime 座席后续处理时长
   * @param data.ivrInfo.type 是否为监控座席 否 'agent' 是 'manager'
   * @param data.ivrInfo.exten 座席工号
   * @param data.ivrInfo.password 座席密码 为空不传
   * @returns {*}
   */
  export const updateUser = ({commit, state, rootState, dispatch}, data) => {
    let form = deepClone(data)
    // 模糊密码敏感字段 改成sosdwarp
    let ivrInfo = form.ivrInfo || {}
    if (ivrInfo.password) {
      ivrInfo.sosdwarp = Base64.encode(ivrInfo.password)
      delete ivrInfo.password
    }
    return agentDept.updateUser(form)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /**
   * 新版批量更新座席信息
   * @param data.query {}里面为搜索座席的条件
   * @param data.set.flag 修改的类别
   * @param data.set.deptId 修改成的部门id
   * @param data.set.parentId 修改成的上级id
   * @param data.set.role 修改成的角色id 数组
   * @param data.set.maxImDealCount im最大处理数 "10"
   * @param data.set.minImDealCount im最小处理数 "1"
   * @param data.set.imClaimStatus im领取开关状态 "open"/"close"
   * @param data.set.maxEmailDealCount 邮件最大处理数 "10"
   * @param data.set.gatewayLoginWay 是否允许sip话机登录 true/false
   * @param data.set.localLoginWay 是否允许手机登录 true/false
   * @param data.set.sipLoginWay  是否允许软电话登录 true/false
   * @param data.set.appLoginWay 是否允许app登录 true/false
   * @param data.set.callIngWebchatSwitch 来电时不接入在线咨询 "yes"/"no"
   * data.total 批量修改座席的数量number
   * @returns {*}
   */
  export const batchUpdateUser = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.batchUpdateUser(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  export const queryUserInfoOutflow = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.queryUserInfoOutflow(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  export const addUserInfoOutflow = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.addUserInfoOutflow(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  export const updateUserInfoOutflow = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.updateUserInfoOutflow(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  export const deleteUserInfoOutflow = ({commit, state, rootState, dispatch}, data) => {
    return agentDept.deleteUserInfoOutflow(data)
      .then(response => {
        return response
      })
      .catch(() => {
        commit(globalTypes.SET_ERROR, 'message.default_tips')
      })
  }
  /* 导入批量处理座席模板 */
  /**
   * @param data.fileName xlsx,excle文件
   * @param data.trueName xlsx,excle文件
   * @param data.owner me
   * @param data.barchNo 时间组成得信息
   * @param data.heads []座席信息
   * @param data.flag start
   */
  export const userTempImport = ({commit, state}, data) => {
    return agentDept.userTempImport(data)
    .then(response => {
      return response.success && response
    })
    .catch(() => {
      commit(globalTypes.SET_ERROR, 'message.default_tips')
    })
  }
  /* 解除客服助手绑定 */
  /**
   * @param data.userId 座席id
   */
  export const cancelWechatHelperBind = ({commit, state}, data) => {
    return agentDept.cancelWechatHelperBind(data)
    .then(response => {
      return response.success && response
    })
    .catch(() => {
      commit(globalTypes.SET_ERROR, 'message.default_tips')
    })
  }
  /* 批量解除客服助手绑定 */
  /**
   * @param data.query 查询条件
   */
  export const batchCancelWechatHelperBind = ({commit, state}, data) => {
    return agentDept.batchCancelWechatHelperBind(data)
    .then(response => {
      return response.success && response
    })
    .catch(() => {
      commit(globalTypes.SET_ERROR, 'message.default_tips')
    })
  }
  /* 查询导入模板得状态 */
  /**
   * data: {}
   */
  export const queryMyLatestTask = ({commit, state}, data) => {
    return agentDept.queryMyLatestTask(data)
    .then(response => {
      return response.success && response
    })
    .catch(() => {
      commit(globalTypes.SET_ERROR, 'message.default_tips')
    })
  }
  /* 座席增删改查 end */
  /**
   * [removeLock description]
   * @param  {[type]} options.data [座席id
   * ]
   * @return {[请求成功后返回的信息]}               [description]
   */
  export const removeLock = ({commit, state}, data) => {
    return agentDept.removeLock(data)
    .then(response => {
      return response.success && response
    })
    .catch(() => {
      commit(globalTypes.SET_ERROR, 'message.default_tips')
    })
  }
